package dmsxl.tanxin;

import java.util.HashMap;
import java.util.Map;

/**
 * Author: Zhang Dongwei
 * Date: 2023/7/31 21:09
 */
public class tx13_860 {

    public static void main(String[] args) {
//        int[] bills = {5, 5, 5, 10, 20};
        int[] bills = {5, 5, 10, 10, 20};
        System.out.println(lemonadeChange(bills));
    }

//    自己写的，效果不好
    public static boolean lemonadeChange1(int[] bills) {
        Map<Integer, Integer> map = new HashMap<>();
        map.put(5, 0);
        map.put(10, 0);
        map.put(20, 0);
        for (int i = 0; i < bills.length; i++){
            if (bills[i] == 5) map.put(5, map.get(5) + 1);
            if (bills[i] == 10){
                if (map.get(5) >= 1) {
                    map.put(10, map.get(10) + 1);
                    map.put(5, map.get(5) - 1);
                }else return false;
            }
            if (bills[i] == 20){
                if (map.get(10) >= 1 && map.get(5) >= 1){
                    map.put(20, map.get(20) + 1);
                    map.put(10, map.get(10) - 1);
                    map.put(5, map.get(5) - 1);
                }else if (map.get(5) >= 3){
                    map.put(20, map.get(20) + 1);
                    map.put(5, map.get(5) - 3);
                }else return false;
            }
        }
        return true;
    }

//    答案
    public static boolean lemonadeChange(int[] bills) {
         int five = 0, ten = 0;
         for (int i = 0; i < bills.length; i++){
             if (bills[i] == 5) five ++;
             else if (bills[i] == 10){
                 five --;
                 ten ++;
             }else if (bills[i] == 20){
                 if (ten > 0){
                     ten --;
                     five --;
                 }else {
                     five -= 3;
                 }
             }
             if (five < 0 || ten < 0) return false;
         }
         return true;
    }
}
